//! moment.js
//! version : 2.8.1
//! authors : Tim Wood, Iskren Chernev, Moment.js contributors
//! license : MIT
//! momentjs.com
(function(a) {
    function b(a, b, c) {
        switch (arguments.length) {
        case 2:
            return null != a ? a: b;
        case 3:
            return null != a ? a: null != b ? b: c;
        default:
            throw new Error("Implement me")
        }
    }
    function c() {
        return {
            empty:
            !1,
            unusedTokens: [],
            unusedInput: [],
            overflow: -2,
            charsLeftOver: 0,
            nullInput: !1,
            invalidMonth: null,
            invalidFormat: !1,
            userInvalidated: !1,
            iso: !1
        }
    }
    function d(a) {
        rb.suppressDeprecationWarnings === !1 && "undefined" != typeof console && console.warn && console.warn("Deprecation warning: " + a)
    }
    function e(a, b) {
        var c = !0;
        return l(function() {
            return c && (d(a), c = !1),
            b.apply(this, arguments)
        },
        b)
    }
    function f(a, b) {
        nc[a] || (d(b), nc[a] = !0)
    }
    function g(a, b) {
        return function(c) {
            return o(a.call(this, c), b)
        }
    }
    function h(a, b) {
        return function(c) {
            return this.localeData().ordinal(a.call(this, c), b)
        }
    }
    function i() {}
    function j(a, b) {
        b !== !1 && E(a),
        m(this, a),
        this._d = new Date( + a._d)
    }
    function k(a) {
        var b = x(a),
        c = b.year || 0,
        d = b.quarter || 0,
        e = b.month || 0,
        f = b.week || 0,
        g = b.day || 0,
        h = b.hour || 0,
        i = b.minute || 0,
        j = b.second || 0,
        k = b.millisecond || 0;
        this._milliseconds = +k + 1e3 * j + 6e4 * i + 36e5 * h,
        this._days = +g + 7 * f,
        this._months = +e + 3 * d + 12 * c,
        this._data = {},
        this._locale = rb.localeData(),
        this._bubble()
    }
    function l(a, b) {
        for (var c in b) b.hasOwnProperty(c) && (a[c] = b[c]);
        return b.hasOwnProperty("toString") && (a.toString = b.toString),
        b.hasOwnProperty("valueOf") && (a.valueOf = b.valueOf),
        a
    }
    function m(a, b) {
        var c, d, e;
        if ("undefined" != typeof b._isAMomentObject && (a._isAMomentObject = b._isAMomentObject), "undefined" != typeof b._i && (a._i = b._i), "undefined" != typeof b._f && (a._f = b._f), "undefined" != typeof b._l && (a._l = b._l), "undefined" != typeof b._strict && (a._strict = b._strict), "undefined" != typeof b._tzm && (a._tzm = b._tzm), "undefined" != typeof b._isUTC && (a._isUTC = b._isUTC), "undefined" != typeof b._offset && (a._offset = b._offset), "undefined" != typeof b._pf && (a._pf = b._pf), "undefined" != typeof b._locale && (a._locale = b._locale), Fb.length > 0) for (c in Fb) d = Fb[c],
        e = b[d],
        "undefined" != typeof e && (a[d] = e);
        return a
    }
    function n(a) {
        return 0 > a ? Math.ceil(a) : Math.floor(a)
    }
    function o(a, b, c) {
        for (var d = "" + Math.abs(a), e = a >= 0; d.length < b;) d = "0" + d;
        return (e ? c ? "+": "": "-") + d
    }
    function p(a, b) {
        var c = {
            milliseconds: 0,
            months: 0
        };
        return c.months = b.month() - a.month() + 12 * (b.year() - a.year()),
        a.clone().add(c.months, "M").isAfter(b) && --c.months,
        c.milliseconds = +b - +a.clone().add(c.months, "M"),
        c
    }
    function q(a, b) {
        var c;
        return b = J(b, a),
        a.isBefore(b) ? c = p(a, b) : (c = p(b, a), c.milliseconds = -c.milliseconds, c.months = -c.months),
        c
    }
    function r(a, b) {
        return function(c, d) {
            var e, g;
            return null === d || isNaN( + d) || (f(b, "moment()." + b + "(period, number) is deprecated. Please use moment()." + b + "(number, period)."), g = c, c = d, d = g),
            c = "string" == typeof c ? +c: c,
            e = rb.duration(c, d),
            s(this, e, a),
            this
        }
    }
    function s(a, b, c, d) {
        var e = b._milliseconds,
        f = b._days,
        g = b._months;
        d = null == d ? !0 : d,
        e && a._d.setTime( + a._d + e * c),
        f && lb(a, "Date", kb(a, "Date") + f * c),
        g && jb(a, kb(a, "Month") + g * c),
        d && rb.updateOffset(a, f || g)
    }
    function t(a) {
        return "[object Array]" === Object.prototype.toString.call(a)
    }
    function u(a) {
        return "[object Date]" === Object.prototype.toString.call(a) || a instanceof Date
    }
    function v(a, b, c) {
        var d, e = Math.min(a.length, b.length),
        f = Math.abs(a.length - b.length),
        g = 0;
        for (d = 0; e > d; d++)(c && a[d] !== b[d] || !c && z(a[d]) !== z(b[d])) && g++;
        return g + f
    }
    function w(a) {
        if (a) {
            var b = a.toLowerCase().replace(/(.)s$/, "$1");
            a = gc[a] || hc[b] || b
        }
        return a
    }
    function x(a) {
        var b, c, d = {};
        for (c in a) a.hasOwnProperty(c) && (b = w(c), b && (d[b] = a[c]));
        return d
    }
    function y(b) {
        var c, d;
        if (0 === b.indexOf("week")) c = 7,
        d = "day";
        else {
            if (0 !== b.indexOf("month")) return;
            c = 12,
            d = "month"
        }
        rb[b] = function(e, f) {
            var g, h, i = rb._locale[b],
            j = [];
            if ("number" == typeof e && (f = e, e = a), h = function(a) {
                var b = rb().utc().set(d, a);
                return i.call(rb._locale, b, e || "")
            },
            null != f) return h(f);
            for (g = 0; c > g; g++) j.push(h(g));
            return j
        }
    }
    function z(a) {
        var b = +a,
        c = 0;
        return 0 !== b && isFinite(b) && (c = b >= 0 ? Math.floor(b) : Math.ceil(b)),
        c
    }
    function A(a, b) {
        return new Date(Date.UTC(a, b + 1, 0)).getUTCDate()
    }
    function B(a, b, c) {
        return fb(rb([a, 11, 31 + b - c]), b, c).week
    }
    function C(a) {
        return D(a) ? 366 : 365
    }
    function D(a) {
        return a % 4 === 0 && a % 100 !== 0 || a % 400 === 0
    }
    function E(a) {
        var b;
        a._a && -2 === a._pf.overflow && (b = a._a[yb] < 0 || a._a[yb] > 11 ? yb: a._a[zb] < 1 || a._a[zb] > A(a._a[xb], a._a[yb]) ? zb: a._a[Ab] < 0 || a._a[Ab] > 23 ? Ab: a._a[Bb] < 0 || a._a[Bb] > 59 ? Bb: a._a[Cb] < 0 || a._a[Cb] > 59 ? Cb: a._a[Db] < 0 || a._a[Db] > 999 ? Db: -1, a._pf._overflowDayOfYear && (xb > b || b > zb) && (b = zb), a._pf.overflow = b)
    }
    function F(a) {
        return null == a._isValid && (a._isValid = !isNaN(a._d.getTime()) && a._pf.overflow < 0 && !a._pf.empty && !a._pf.invalidMonth && !a._pf.nullInput && !a._pf.invalidFormat && !a._pf.userInvalidated, a._strict && (a._isValid = a._isValid && 0 === a._pf.charsLeftOver && 0 === a._pf.unusedTokens.length)),
        a._isValid
    }
    function G(a) {
        return a ? a.toLowerCase().replace("_", "-") : a
    }
    function H(a) {
        for (var b, c, d, e, f = 0; f < a.length;) {
            for (e = G(a[f]).split("-"), b = e.length, c = G(a[f + 1]), c = c ? c.split("-") : null; b > 0;) {
                if (d = I(e.slice(0, b).join("-"))) return d;
                if (c && c.length >= b && v(e, c, !0) >= b - 1) break;
                b--
            }
            f++
        }
        return null
    }
    function I(a) {
        var b = null;
        if (!Eb[a] && Gb) try {
            b = rb.locale(),
            require("./locale/" + a),
            rb.locale(b)
        } catch(c) {}
        return Eb[a]
    }
    function J(a, b) {
        return b._isUTC ? rb(a).zone(b._offset || 0) : rb(a).local()
    }
    function K(a) {
        return a.match(/\[[\s\S]/) ? a.replace(/^\[|\]$/g, "") : a.replace(/\\/g, "")
    }
    function L(a) {
        var b, c, d = a.match(Kb);
        for (b = 0, c = d.length; c > b; b++) d[b] = mc[d[b]] ? mc[d[b]] : K(d[b]);
        return function(e) {
            var f = "";
            for (b = 0; c > b; b++) f += d[b] instanceof Function ? d[b].call(e, a) : d[b];
            return f
        }
    }
    function M(a, b) {
        return a.isValid() ? (b = N(b, a.localeData()), ic[b] || (ic[b] = L(b)), ic[b](a)) : a.localeData().invalidDate()
    }
    function N(a, b) {
        function c(a) {
            return b.longDateFormat(a) || a
        }
        var d = 5;
        for (Lb.lastIndex = 0; d >= 0 && Lb.test(a);) a = a.replace(Lb, c),
        Lb.lastIndex = 0,
        d -= 1;
        return a
    }
    function O(a, b) {
        var c, d = b._strict;
        switch (a) {
        case "Q":
            return Wb;
        case "DDDD":
            return Yb;
        case "YYYY":
        case "GGGG":
        case "gggg":
            return d ? Zb: Ob;
        case "Y":
        case "G":
        case "g":
            return _b;
        case "YYYYYY":
        case "YYYYY":
        case "GGGGG":
        case "ggggg":
            return d ? $b: Pb;
        case "S":
            if (d) return Wb;
        case "SS":
            if (d) return Xb;
        case "SSS":
            if (d) return Yb;
        case "DDD":
            return Nb;
        case "MMM":
        case "MMMM":
        case "dd":
        case "ddd":
        case "dddd":
            return Rb;
        case "a":
        case "A":
            return b._locale._meridiemParse;
        case "X":
            return Ub;
        case "Z":
        case "ZZ":
            return Sb;
        case "T":
            return Tb;
        case "SSSS":
            return Qb;
        case "MM":
        case "DD":
        case "YY":
        case "GG":
        case "gg":
        case "HH":
        case "hh":
        case "mm":
        case "ss":
        case "ww":
        case "WW":
            return d ? Xb: Mb;
        case "M":
        case "D":
        case "d":
        case "H":
        case "h":
        case "m":
        case "s":
        case "w":
        case "W":
        case "e":
        case "E":
            return Mb;
        case "Do":
            return Vb;
        default:
            return c = new RegExp(X(W(a.replace("\\", "")), "i"))
        }
    }
    function P(a) {
        a = a || "";
        var b = a.match(Sb) || [],
        c = b[b.length - 1] || [],
        d = (c + "").match(ec) || ["-", 0, 0],
        e = +(60 * d[1]) + z(d[2]);
        return "+" === d[0] ? -e: e
    }
    function Q(a, b, c) {
        var d, e = c._a;
        switch (a) {
        case "Q":
            null != b && (e[yb] = 3 * (z(b) - 1));
            break;
        case "M":
        case "MM":
            null != b && (e[yb] = z(b) - 1);
            break;
        case "MMM":
        case "MMMM":
            d = c._locale.monthsParse(b),
            null != d ? e[yb] = d: c._pf.invalidMonth = b;
            break;
        case "D":
        case "DD":
            null != b && (e[zb] = z(b));
            break;
        case "Do":
            null != b && (e[zb] = z(parseInt(b, 10)));
            break;
        case "DDD":
        case "DDDD":
            null != b && (c._dayOfYear = z(b));
            break;
        case "YY":
            e[xb] = rb.parseTwoDigitYear(b);
            break;
        case "YYYY":
        case "YYYYY":
        case "YYYYYY":
            e[xb] = z(b);
            break;
        case "a":
        case "A":
            c._isPm = c._locale.isPM(b);
            break;
        case "H":
        case "HH":
        case "h":
        case "hh":
            e[Ab] = z(b);
            break;
        case "m":
        case "mm":
            e[Bb] = z(b);
            break;
        case "s":
        case "ss":
            e[Cb] = z(b);
            break;
        case "S":
        case "SS":
        case "SSS":
        case "SSSS":
            e[Db] = z(1e3 * ("0." + b));
            break;
        case "X":
            c._d = new Date(1e3 * parseFloat(b));
            break;
        case "Z":
        case "ZZ":
            c._useUTC = !0,
            c._tzm = P(b);
            break;
        case "dd":
        case "ddd":
        case "dddd":
            d = c._locale.weekdaysParse(b),
            null != d ? (c._w = c._w || {},
            c._w.d = d) : c._pf.invalidWeekday = b;
            break;
        case "w":
        case "ww":
        case "W":
        case "WW":
        case "d":
        case "e":
        case "E":
            a = a.substr(0, 1);
        case "gggg":
        case "GGGG":
        case "GGGGG":
            a = a.substr(0, 2),
            b && (c._w = c._w || {},
            c._w[a] = z(b));
            break;
        case "gg":
        case "GG":
            c._w = c._w || {},
            c._w[a] = rb.parseTwoDigitYear(b)
        }
    }
    function R(a) {
        var c, d, e, f, g, h, i;
        c = a._w,
        null != c.GG || null != c.W || null != c.E ? (g = 1, h = 4, d = b(c.GG, a._a[xb], fb(rb(), 1, 4).year), e = b(c.W, 1), f = b(c.E, 1)) : (g = a._locale._week.dow, h = a._locale._week.doy, d = b(c.gg, a._a[xb], fb(rb(), g, h).year), e = b(c.w, 1), null != c.d ? (f = c.d, g > f && ++e) : f = null != c.e ? c.e + g: g),
        i = gb(d, e, f, h, g),
        a._a[xb] = i.year,
        a._dayOfYear = i.dayOfYear
    }
    function S(a) {
        var c, d, e, f, g = [];
        if (!a._d) {
            for (e = U(a), a._w && null == a._a[zb] && null == a._a[yb] && R(a), a._dayOfYear && (f = b(a._a[xb], e[xb]), a._dayOfYear > C(f) && (a._pf._overflowDayOfYear = !0), d = bb(f, 0, a._dayOfYear), a._a[yb] = d.getUTCMonth(), a._a[zb] = d.getUTCDate()), c = 0; 3 > c && null == a._a[c]; ++c) a._a[c] = g[c] = e[c];
            for (; 7 > c; c++) a._a[c] = g[c] = null == a._a[c] ? 2 === c ? 1 : 0 : a._a[c];
            a._d = (a._useUTC ? bb: ab).apply(null, g),
            null != a._tzm && a._d.setUTCMinutes(a._d.getUTCMinutes() + a._tzm)
        }
    }
    function T(a) {
        var b;
        a._d || (b = x(a._i), a._a = [b.year, b.month, b.day, b.hour, b.minute, b.second, b.millisecond], S(a))
    }
    function U(a) {
        var b = new Date;
        return a._useUTC ? [b.getUTCFullYear(), b.getUTCMonth(), b.getUTCDate()] : [b.getFullYear(), b.getMonth(), b.getDate()]
    }
    function V(a) {
        if (a._f === rb.ISO_8601) return void Z(a);
        a._a = [],
        a._pf.empty = !0;
        var b, c, d, e, f, g = "" + a._i,
        h = g.length,
        i = 0;
        for (d = N(a._f, a._locale).match(Kb) || [], b = 0; b < d.length; b++) e = d[b],
        c = (g.match(O(e, a)) || [])[0],
        c && (f = g.substr(0, g.indexOf(c)), f.length > 0 && a._pf.unusedInput.push(f), g = g.slice(g.indexOf(c) + c.length), i += c.length),
        mc[e] ? (c ? a._pf.empty = !1 : a._pf.unusedTokens.push(e), Q(e, c, a)) : a._strict && !c && a._pf.unusedTokens.push(e);
        a._pf.charsLeftOver = h - i,
        g.length > 0 && a._pf.unusedInput.push(g),
        a._isPm && a._a[Ab] < 12 && (a._a[Ab] += 12),
        a._isPm === !1 && 12 === a._a[Ab] && (a._a[Ab] = 0),
        S(a),
        E(a)
    }
    function W(a) {
        return a.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,
        function(a, b, c, d, e) {
            return b || c || d || e
        })
    }
    function X(a) {
        return a.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&")
    }
    function Y(a) {
        var b, d, e, f, g;
        if (0 === a._f.length) return a._pf.invalidFormat = !0,
        void(a._d = new Date(0 / 0));
        for (f = 0; f < a._f.length; f++) g = 0,
        b = m({},
        a),
        b._pf = c(),
        b._f = a._f[f],
        V(b),
        F(b) && (g += b._pf.charsLeftOver, g += 10 * b._pf.unusedTokens.length, b._pf.score = g, (null == e || e > g) && (e = g, d = b));
        l(a, d || b)
    }
    function Z(a) {
        var b, c, d = a._i,
        e = ac.exec(d);
        if (e) {
            for (a._pf.iso = !0, b = 0, c = cc.length; c > b; b++) if (cc[b][1].exec(d)) {
                a._f = cc[b][0] + (e[6] || " ");
                break
            }
            for (b = 0, c = dc.length; c > b; b++) if (dc[b][1].exec(d)) {
                a._f += dc[b][0];
                break
            }
            d.match(Sb) && (a._f += "Z"),
            V(a)
        } else a._isValid = !1
    }
    function $(a) {
        Z(a),
        a._isValid === !1 && (delete a._isValid, rb.createFromInputFallback(a))
    }
    function _(b) {
        var c, d = b._i;
        d === a ? b._d = new Date: u(d) ? b._d = new Date( + d) : null !== (c = Hb.exec(d)) ? b._d = new Date( + c[1]) : "string" == typeof d ? $(b) : t(d) ? (b._a = d.slice(0), S(b)) : "object" == typeof d ? T(b) : "number" == typeof d ? b._d = new Date(d) : rb.createFromInputFallback(b)
    }
    function ab(a, b, c, d, e, f, g) {
        var h = new Date(a, b, c, d, e, f, g);
        return 1970 > a && h.setFullYear(a),
        h
    }
    function bb(a) {
        var b = new Date(Date.UTC.apply(null, arguments));
        return 1970 > a && b.setUTCFullYear(a),
        b
    }
    function cb(a, b) {
        if ("string" == typeof a) if (isNaN(a)) {
            if (a = b.weekdaysParse(a), "number" != typeof a) return null
        } else a = parseInt(a, 10);
        return a
    }
    function db(a, b, c, d, e) {
        return e.relativeTime(b || 1, !!c, a, d)
    }
    function eb(a, b, c) {
        var d = rb.duration(a).abs(),
        e = wb(d.as("s")),
        f = wb(d.as("m")),
        g = wb(d.as("h")),
        h = wb(d.as("d")),
        i = wb(d.as("M")),
        j = wb(d.as("y")),
        k = e < jc.s && ["s", e] || 1 === f && ["m"] || f < jc.m && ["mm", f] || 1 === g && ["h"] || g < jc.h && ["hh", g] || 1 === h && ["d"] || h < jc.d && ["dd", h] || 1 === i && ["M"] || i < jc.M && ["MM", i] || 1 === j && ["y"] || ["yy", j];
        return k[2] = b,
        k[3] = +a > 0,
        k[4] = c,
        db.apply({},
        k)
    }
    function fb(a, b, c) {
        var d, e = c - b,
        f = c - a.day();
        return f > e && (f -= 7),
        e - 7 > f && (f += 7),
        d = rb(a).add(f, "d"),
        {
            week: Math.ceil(d.dayOfYear() / 7),
            year: d.year()
        }
    }
    function gb(a, b, c, d, e) {
        var f, g, h = bb(a, 0, 1).getUTCDay();
        return h = 0 === h ? 7 : h,
        c = null != c ? c: e,
        f = e - h + (h > d ? 7 : 0) - (e > h ? 7 : 0),
        g = 7 * (b - 1) + (c - e) + f + 1,
        {
            year: g > 0 ? a: a - 1,
            dayOfYear: g > 0 ? g: C(a - 1) + g
        }
    }
    function hb(b) {
        var c = b._i,
        d = b._f;
        return b._locale = b._locale || rb.localeData(b._l),
        null === c || d === a && "" === c ? rb.invalid({
            nullInput: !0
        }) : ("string" == typeof c && (b._i = c = b._locale.preparse(c)), rb.isMoment(c) ? new j(c, !0) : (d ? t(d) ? Y(b) : V(b) : _(b), new j(b)))
    }
    function ib(a, b) {
        var c, d;
        if (1 === b.length && t(b[0]) && (b = b[0]), !b.length) return rb();
        for (c = b[0], d = 1; d < b.length; ++d) b[d][a](c) && (c = b[d]);
        return c
    }
    function jb(a, b) {
        var c;
        return "string" == typeof b && (b = a.localeData().monthsParse(b), "number" != typeof b) ? a: (c = Math.min(a.date(), A(a.year(), b)), a._d["set" + (a._isUTC ? "UTC": "") + "Month"](b, c), a)
    }
    function kb(a, b) {
        return a._d["get" + (a._isUTC ? "UTC": "") + b]()
    }
    function lb(a, b, c) {
        return "Month" === b ? jb(a, c) : a._d["set" + (a._isUTC ? "UTC": "") + b](c)
    }
    function mb(a, b) {
        return function(c) {
            return null != c ? (lb(this, a, c), rb.updateOffset(this, b), this) : kb(this, a)
        }
    }
    function nb(a) {
        return 400 * a / 146097
    }
    function ob(a) {
        return 146097 * a / 400
    }
    function pb(a) {
        rb.duration.fn[a] = function() {
            return this._data[a]
        }
    }
    function qb(a) {
        "undefined" == typeof ender && (sb = vb.moment, vb.moment = a ? e("Accessing Moment through the global scope is deprecated, and will be removed in an upcoming release.", rb) : rb)
    }
    for (var rb, sb, tb, ub = "2.8.1",
    vb = "undefined" != typeof global ? global: this, wb = Math.round, xb = 0, yb = 1, zb = 2, Ab = 3, Bb = 4, Cb = 5, Db = 6, Eb = {},
    Fb = [], Gb = "undefined" != typeof module && module.exports, Hb = /^\/?Date\((\-?\d+)/i, Ib = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/, Jb = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/, Kb = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|X|zz?|ZZ?|.)/g, Lb = /(\[[^\[]*\])|(\\)?(LT|LL?L?L?|l{1,4})/g, Mb = /\d\d?/, Nb = /\d{1,3}/, Ob = /\d{1,4}/, Pb = /[+\-]?\d{1,6}/, Qb = /\d+/, Rb = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i, Sb = /Z|[\+\-]\d\d:?\d\d/gi, Tb = /T/i, Ub = /[\+\-]?\d+(\.\d{1,3})?/, Vb = /\d{1,2}/, Wb = /\d/, Xb = /\d\d/, Yb = /\d{3}/, Zb = /\d{4}/, $b = /[+-]?\d{6}/, _b = /[+-]?\d+/, ac = /^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/, bc = "YYYY-MM-DDTHH:mm:ssZ", cc = [["YYYYYY-MM-DD", /[+-]\d{6}-\d{2}-\d{2}/], ["YYYY-MM-DD", /\d{4}-\d{2}-\d{2}/], ["GGGG-[W]WW-E", /\d{4}-W\d{2}-\d/], ["GGGG-[W]WW", /\d{4}-W\d{2}/], ["YYYY-DDD", /\d{4}-\d{3}/]], dc = [["HH:mm:ss.SSSS", /(T| )\d\d:\d\d:\d\d\.\d+/], ["HH:mm:ss", /(T| )\d\d:\d\d:\d\d/], ["HH:mm", /(T| )\d\d:\d\d/], ["HH", /(T| )\d\d/]], ec = /([\+\-]|\d\d)/gi, fc = ("Date|Hours|Minutes|Seconds|Milliseconds".split("|"), {
        Milliseconds: 1,
        Seconds: 1e3,
        Minutes: 6e4,
        Hours: 36e5,
        Days: 864e5,
        Months: 2592e6,
        Years: 31536e6
    }), gc = {
        ms: "millisecond",
        s: "second",
        m: "minute",
        h: "hour",
        d: "day",
        D: "date",
        w: "week",
        W: "isoWeek",
        M: "month",
        Q: "quarter",
        y: "year",
        DDD: "dayOfYear",
        e: "weekday",
        E: "isoWeekday",
        gg: "weekYear",
        GG: "isoWeekYear"
    },
    hc = {
        dayofyear: "dayOfYear",
        isoweekday: "isoWeekday",
        isoweek: "isoWeek",
        weekyear: "weekYear",
        isoweekyear: "isoWeekYear"
    },
    ic = {},
    jc = {
        s: 45,
        m: 45,
        h: 22,
        d: 26,
        M: 11
    },
    kc = "DDD w W M D d".split(" "), lc = "M D H h m s w W".split(" "), mc = {
        M: function() {
            return this.month() + 1
        },
        MMM: function(a) {
            return this.localeData().monthsShort(this, a)
        },
        MMMM: function(a) {
            return this.localeData().months(this, a)
        },
        D: function() {
            return this.date()
        },
        DDD: function() {
            return this.dayOfYear()
        },
        d: function() {
            return this.day()
        },
        dd: function(a) {
            return this.localeData().weekdaysMin(this, a)
        },
        ddd: function(a) {
            return this.localeData().weekdaysShort(this, a)
        },
        dddd: function(a) {
            return this.localeData().weekdays(this, a)
        },
        w: function() {
            return this.week()
        },
        W: function() {
            return this.isoWeek()
        },
        YY: function() {
            return o(this.year() % 100, 2)
        },
        YYYY: function() {
            return o(this.year(), 4)
        },
        YYYYY: function() {
            return o(this.year(), 5)
        },
        YYYYYY: function() {
            var a = this.year(),
            b = a >= 0 ? "+": "-";
            return b + o(Math.abs(a), 6)
        },
        gg: function() {
            return o(this.weekYear() % 100, 2)
        },
        gggg: function() {
            return o(this.weekYear(), 4)
        },
        ggggg: function() {
            return o(this.weekYear(), 5)
        },
        GG: function() {
            return o(this.isoWeekYear() % 100, 2)
        },
        GGGG: function() {
            return o(this.isoWeekYear(), 4)
        },
        GGGGG: function() {
            return o(this.isoWeekYear(), 5)
        },
        e: function() {
            return this.weekday()
        },
        E: function() {
            return this.isoWeekday()
        },
        a: function() {
            return this.localeData().meridiem(this.hours(), this.minutes(), !0)
        },
        A: function() {
            return this.localeData().meridiem(this.hours(), this.minutes(), !1)
        },
        H: function() {
            return this.hours()
        },
        h: function() {
            return this.hours() % 12 || 12
        },
        m: function() {
            return this.minutes()
        },
        s: function() {
            return this.seconds()
        },
        S: function() {
            return z(this.milliseconds() / 100)
        },
        SS: function() {
            return o(z(this.milliseconds() / 10), 2)
        },
        SSS: function() {
            return o(this.milliseconds(), 3)
        },
        SSSS: function() {
            return o(this.milliseconds(), 3)
        },
        Z: function() {
            var a = -this.zone(),
            b = "+";
            return 0 > a && (a = -a, b = "-"),
            b + o(z(a / 60), 2) + ":" + o(z(a) % 60, 2)
        },
        ZZ: function() {
            var a = -this.zone(),
            b = "+";
            return 0 > a && (a = -a, b = "-"),
            b + o(z(a / 60), 2) + o(z(a) % 60, 2)
        },
        z: function() {
            return this.zoneAbbr()
        },
        zz: function() {
            return this.zoneName()
        },
        X: function() {
            return this.unix()
        },
        Q: function() {
            return this.quarter()
        }
    },
    nc = {},
    oc = ["months", "monthsShort", "weekdays", "weekdaysShort", "weekdaysMin"]; kc.length;) tb = kc.pop(),
    mc[tb + "o"] = h(mc[tb], tb);
    for (; lc.length;) tb = lc.pop(),
    mc[tb + tb] = g(mc[tb], 2);
    mc.DDDD = g(mc.DDD, 3),
    l(i.prototype, {
        set: function(a) {
            var b, c;
            for (c in a) b = a[c],
            "function" == typeof b ? this[c] = b: this["_" + c] = b
        },
        _months: "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),
        months: function(a) {
            return this._months[a.month()]
        },
        _monthsShort: "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),
        monthsShort: function(a) {
            return this._monthsShort[a.month()]
        },
        monthsParse: function(a) {
            var b, c, d;
            for (this._monthsParse || (this._monthsParse = []), b = 0; 12 > b; b++) if (this._monthsParse[b] || (c = rb.utc([2e3, b]), d = "^" + this.months(c, "") + "|^" + this.monthsShort(c, ""), this._monthsParse[b] = new RegExp(d.replace(".", ""), "i")), this._monthsParse[b].test(a)) return b
        },
        _weekdays: "日_一_二_三_四_五_六".split("_"),
        weekdays: function(a) {
            return this._weekdays[a.day()]
        },
        _weekdaysShort: "日_一_二_三_四_五_六".split("_"),
        weekdaysShort: function(a) {
            return this._weekdaysShort[a.day()]
        },
        _weekdaysMin: "日_一_二_三_四_五_六".split("_"),
        weekdaysMin: function(a) {
            return this._weekdaysMin[a.day()]
        },
        weekdaysParse: function(a) {
            var b, c, d;
            for (this._weekdaysParse || (this._weekdaysParse = []), b = 0; 7 > b; b++) if (this._weekdaysParse[b] || (c = rb([2e3, 1]).day(b), d = "^" + this.weekdays(c, "") + "|^" + this.weekdaysShort(c, "") + "|^" + this.weekdaysMin(c, ""), this._weekdaysParse[b] = new RegExp(d.replace(".", ""), "i")), this._weekdaysParse[b].test(a)) return b
        },
        _longDateFormat: {
            LT: "h:mm A",
            L: "MM/DD/YYYY",
            LL: "MMMM D, YYYY",
            LLL: "MMMM D, YYYY LT",
            LLLL: "dddd, MMMM D, YYYY LT"
        },
        longDateFormat: function(a) {
            var b = this._longDateFormat[a];
            return ! b && this._longDateFormat[a.toUpperCase()] && (b = this._longDateFormat[a.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,
            function(a) {
                return a.slice(1)
            }), this._longDateFormat[a] = b),
            b
        },
        isPM: function(a) {
            return "p" === (a + "").toLowerCase().charAt(0)
        },
        _meridiemParse: /[ap]\.?m?\.?/i,
        meridiem: function(a, b, c) {
            return a > 11 ? c ? "pm": "PM": c ? "am": "AM"
        },
        _calendar: {
            sameDay: "[Today at] LT",
            nextDay: "[Tomorrow at] LT",
            nextWeek: "dddd [at] LT",
            lastDay: "[Yesterday at] LT",
            lastWeek: "[Last] dddd [at] LT",
            sameElse: "L"
        },
        calendar: function(a, b) {
            var c = this._calendar[a];
            return "function" == typeof c ? c.apply(b) : c
        },
        _relativeTime: {
            future: "in %s",
            past: "%s ago",
            s: "a few seconds",
            m: "a minute",
            mm: "%d minutes",
            h: "an hour",
            hh: "%d hours",
            d: "a day",
            dd: "%d days",
            M: "a month",
            MM: "%d months",
            y: "a year",
            yy: "%d years"
        },
        relativeTime: function(a, b, c, d) {
            var e = this._relativeTime[c];
            return "function" == typeof e ? e(a, b, c, d) : e.replace(/%d/i, a)
        },
        pastFuture: function(a, b) {
            var c = this._relativeTime[a > 0 ? "future": "past"];
            return "function" == typeof c ? c(b) : c.replace(/%s/i, b)
        },
        ordinal: function(a) {
            return this._ordinal.replace("%d", a)
        },
        _ordinal: "%d",
        preparse: function(a) {
            return a
        },
        postformat: function(a) {
            return a
        },
        week: function(a) {
            return fb(a, this._week.dow, this._week.doy).week
        },
        _week: {
            dow: 0,
            doy: 6
        },
        _invalidDate: "Invalid date",
        invalidDate: function() {
            return this._invalidDate
        }
    }),
    rb = function(b, d, e, f) {
        var g;
        return "boolean" == typeof e && (f = e, e = a),
        g = {},
        g._isAMomentObject = !0,
        g._i = b,
        g._f = d,
        g._l = e,
        g._strict = f,
        g._isUTC = !1,
        g._pf = c(),
        hb(g)
    },
    rb.suppressDeprecationWarnings = !1,
    rb.createFromInputFallback = e("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",
    function(a) {
        a._d = new Date(a._i)
    }),
    rb.min = function() {
        var a = [].slice.call(arguments, 0);
        return ib("isBefore", a)
    },
    rb.max = function() {
        var a = [].slice.call(arguments, 0);
        return ib("isAfter", a)
    },
    rb.utc = function(b, d, e, f) {
        var g;
        return "boolean" == typeof e && (f = e, e = a),
        g = {},
        g._isAMomentObject = !0,
        g._useUTC = !0,
        g._isUTC = !0,
        g._l = e,
        g._i = b,
        g._f = d,
        g._strict = f,
        g._pf = c(),
        hb(g).utc()
    },
    rb.unix = function(a) {
        return rb(1e3 * a)
    },
    rb.duration = function(a, b) {
        var c, d, e, f, g = a,
        h = null;
        return rb.isDuration(a) ? g = {
            ms: a._milliseconds,
            d: a._days,
            M: a._months
        }: "number" == typeof a ? (g = {},
        b ? g[b] = a: g.milliseconds = a) : (h = Ib.exec(a)) ? (c = "-" === h[1] ? -1 : 1, g = {
            y: 0,
            d: z(h[zb]) * c,
            h: z(h[Ab]) * c,
            m: z(h[Bb]) * c,
            s: z(h[Cb]) * c,
            ms: z(h[Db]) * c
        }) : (h = Jb.exec(a)) ? (c = "-" === h[1] ? -1 : 1, e = function(a) {
            var b = a && parseFloat(a.replace(",", "."));
            return (isNaN(b) ? 0 : b) * c
        },
        g = {
            y: e(h[2]),
            M: e(h[3]),
            d: e(h[4]),
            h: e(h[5]),
            m: e(h[6]),
            s: e(h[7]),
            w: e(h[8])
        }) : "object" == typeof g && ("from" in g || "to" in g) && (f = q(rb(g.from), rb(g.to)), g = {},
        g.ms = f.milliseconds, g.M = f.months),
        d = new k(g),
        rb.isDuration(a) && a.hasOwnProperty("_locale") && (d._locale = a._locale),
        d
    },
    rb.version = ub,
    rb.defaultFormat = bc,
    rb.ISO_8601 = function() {},
    rb.momentProperties = Fb,
    rb.updateOffset = function() {},
    rb.relativeTimeThreshold = function(b, c) {
        return jc[b] === a ? !1 : c === a ? jc[b] : (jc[b] = c, !0)
    },
    rb.lang = e("moment.lang is deprecated. Use moment.locale instead.",
    function(a, b) {
        return rb.locale(a, b)
    }),
    rb.locale = function(a, b) {
        var c;
        return a && (c = "undefined" != typeof b ? rb.defineLocale(a, b) : rb.localeData(a), c && (rb.duration._locale = rb._locale = c)),
        rb._locale._abbr
    },
    rb.defineLocale = function(a, b) {
        return null !== b ? (b.abbr = a, Eb[a] || (Eb[a] = new i), Eb[a].set(b), rb.locale(a), Eb[a]) : (delete Eb[a], null)
    },
    rb.langData = e("moment.langData is deprecated. Use moment.localeData instead.",
    function(a) {
        return rb.localeData(a)
    }),
    rb.localeData = function(a) {
        var b;
        if (a && a._locale && a._locale._abbr && (a = a._locale._abbr), !a) return rb._locale;
        if (!t(a)) {
            if (b = I(a)) return b;
            a = [a]
        }
        return H(a)
    },
    rb.isMoment = function(a) {
        return a instanceof j || null != a && a.hasOwnProperty("_isAMomentObject")
    },
    rb.isDuration = function(a) {
        return a instanceof k
    };
    for (tb = oc.length - 1; tb >= 0; --tb) y(oc[tb]);
    rb.normalizeUnits = function(a) {
        return w(a)
    },
    rb.invalid = function(a) {
        var b = rb.utc(0 / 0);
        return null != a ? l(b._pf, a) : b._pf.userInvalidated = !0,
        b
    },
    rb.parseZone = function() {
        return rb.apply(null, arguments).parseZone()
    },
    rb.parseTwoDigitYear = function(a) {
        return z(a) + (z(a) > 68 ? 1900 : 2e3)
    },
    l(rb.fn = j.prototype, {
        clone: function() {
            return rb(this)
        },
        valueOf: function() {
            return + this._d + 6e4 * (this._offset || 0)
        },
        unix: function() {
            return Math.floor( + this / 1e3)
        },
        toString: function() {
            return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")
        },
        toDate: function() {
            return this._offset ? new Date( + this) : this._d
        },
        toISOString: function() {
            var a = rb(this).utc();
            return 0 < a.year() && a.year() <= 9999 ? M(a, "YYYY-MM-DD[T]HH:mm:ss.SSS[Z]") : M(a, "YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]")
        },
        toArray: function() {
            var a = this;
            return [a.year(), a.month(), a.date(), a.hours(), a.minutes(), a.seconds(), a.milliseconds()]
        },
        isValid: function() {
            return F(this)
        },
        isDSTShifted: function() {
            return this._a ? this.isValid() && v(this._a, (this._isUTC ? rb.utc(this._a) : rb(this._a)).toArray()) > 0 : !1
        },
        parsingFlags: function() {
            return l({},
            this._pf)
        },
        invalidAt: function() {
            return this._pf.overflow
        },
        utc: function(a) {
            return this.zone(0, a)
        },
        local: function(a) {
            return this._isUTC && (this.zone(0, a), this._isUTC = !1, a && this.add(this._d.getTimezoneOffset(), "m")),
            this
        },
        format: function(a) {
            var b = M(this, a || rb.defaultFormat);
            return this.localeData().postformat(b)
        },
        add: r(1, "add"),
        subtract: r( - 1, "subtract"),
        diff: function(a, b, c) {
            var d, e, f = J(a, this),
            g = 6e4 * (this.zone() - f.zone());
            return b = w(b),
            "year" === b || "month" === b ? (d = 432e5 * (this.daysInMonth() + f.daysInMonth()), e = 12 * (this.year() - f.year()) + (this.month() - f.month()), e += (this - rb(this).startOf("month") - (f - rb(f).startOf("month"))) / d, e -= 6e4 * (this.zone() - rb(this).startOf("month").zone() - (f.zone() - rb(f).startOf("month").zone())) / d, "year" === b && (e /= 12)) : (d = this - f, e = "second" === b ? d / 1e3: "minute" === b ? d / 6e4: "hour" === b ? d / 36e5: "day" === b ? (d - g) / 864e5: "week" === b ? (d - g) / 6048e5: d),
            c ? e: n(e)
        },
        from: function(a, b) {
            return rb.duration({
                to: this,
                from: a
            }).locale(this.locale()).humanize(!b)
        },
        fromNow: function(a) {
            return this.from(rb(), a)
        },
        calendar: function(a) {
            var b = a || rb(),
            c = J(b, this).startOf("day"),
            d = this.diff(c, "days", !0),
            e = -6 > d ? "sameElse": -1 > d ? "lastWeek": 0 > d ? "lastDay": 1 > d ? "sameDay": 2 > d ? "nextDay": 7 > d ? "nextWeek": "sameElse";
            return this.format(this.localeData().calendar(e, this))
        },
        isLeapYear: function() {
            return D(this.year())
        },
        isDST: function() {
            return this.zone() < this.clone().month(0).zone() || this.zone() < this.clone().month(5).zone()
        },
        day: function(a) {
            var b = this._isUTC ? this._d.getUTCDay() : this._d.getDay();
            return null != a ? (a = cb(a, this.localeData()), this.add(a - b, "d")) : b
        },
        month: mb("Month", !0),
        startOf: function(a) {
            switch (a = w(a)) {
            case "year":
                this.month(0);
            case "quarter":
            case "month":
                this.date(1);
            case "week":
            case "isoWeek":
            case "day":
                this.hours(0);
            case "hour":
                this.minutes(0);
            case "minute":
                this.seconds(0);
            case "second":
                this.milliseconds(0)
            }
            return "week" === a ? this.weekday(0) : "isoWeek" === a && this.isoWeekday(1),
            "quarter" === a && this.month(3 * Math.floor(this.month() / 3)),
            this
        },
        endOf: function(a) {
            return a = w(a),
            this.startOf(a).add(1, "isoWeek" === a ? "week": a).subtract(1, "ms")
        },
        isAfter: function(a, b) {
            return b = "undefined" != typeof b ? b: "millisecond",
            +this.clone().startOf(b) > +rb(a).startOf(b)
        },
        isBefore: function(a, b) {
            return b = "undefined" != typeof b ? b: "millisecond",
            +this.clone().startOf(b) < +rb(a).startOf(b)
        },
        isSame: function(a, b) {
            return b = b || "ms",
            +this.clone().startOf(b) === +J(a, this).startOf(b)
        },
        min: e("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",
        function(a) {
            return a = rb.apply(null, arguments),
            this > a ? this: a
        }),
        max: e("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",
        function(a) {
            return a = rb.apply(null, arguments),
            a > this ? this: a
        }),
        zone: function(a, b) {
            var c, d = this._offset || 0;
            return null == a ? this._isUTC ? d: this._d.getTimezoneOffset() : ("string" == typeof a && (a = P(a)), Math.abs(a) < 16 && (a = 60 * a), !this._isUTC && b && (c = this._d.getTimezoneOffset()), this._offset = a, this._isUTC = !0, null != c && this.subtract(c, "m"), d !== a && (!b || this._changeInProgress ? s(this, rb.duration(d - a, "m"), 1, !1) : this._changeInProgress || (this._changeInProgress = !0, rb.updateOffset(this, !0), this._changeInProgress = null)), this)
        },
        zoneAbbr: function() {
            return this._isUTC ? "UTC": ""
        },
        zoneName: function() {
            return this._isUTC ? "Coordinated Universal Time": ""
        },
        parseZone: function() {
            return this._tzm ? this.zone(this._tzm) : "string" == typeof this._i && this.zone(this._i),
            this
        },
        hasAlignedHourOffset: function(a) {
            return a = a ? rb(a).zone() : 0,
            (this.zone() - a) % 60 === 0
        },
        daysInMonth: function() {
            return A(this.year(), this.month())
        },
        dayOfYear: function(a) {
            var b = wb((rb(this).startOf("day") - rb(this).startOf("year")) / 864e5) + 1;
            return null == a ? b: this.add(a - b, "d")
        },
        quarter: function(a) {
            return null == a ? Math.ceil((this.month() + 1) / 3) : this.month(3 * (a - 1) + this.month() % 3)
        },
        weekYear: function(a) {
            var b = fb(this, this.localeData()._week.dow, this.localeData()._week.doy).year;
            return null == a ? b: this.add(a - b, "y")
        },
        isoWeekYear: function(a) {
            var b = fb(this, 1, 4).year;
            return null == a ? b: this.add(a - b, "y")
        },
        week: function(a) {
            var b = this.localeData().week(this);
            return null == a ? b: this.add(7 * (a - b), "d")
        },
        isoWeek: function(a) {
            var b = fb(this, 1, 4).week;
            return null == a ? b: this.add(7 * (a - b), "d")
        },
        weekday: function(a) {
            var b = (this.day() + 7 - this.localeData()._week.dow) % 7;
            return null == a ? b: this.add(a - b, "d")
        },
        isoWeekday: function(a) {
            return null == a ? this.day() || 7 : this.day(this.day() % 7 ? a: a - 7)
        },
        isoWeeksInYear: function() {
            return B(this.year(), 1, 4)
        },
        weeksInYear: function() {
            var a = this.localeData()._week;
            return B(this.year(), a.dow, a.doy)
        },
        get: function(a) {
            return a = w(a),
            this[a]()
        },
        set: function(a, b) {
            return a = w(a),
            "function" == typeof this[a] && this[a](b),
            this
        },
        locale: function(b) {
            return b === a ? this._locale._abbr: (this._locale = rb.localeData(b), this)
        },
        lang: e("moment().lang() is deprecated. Use moment().localeData() instead.",
        function(b) {
            return b === a ? this.localeData() : (this._locale = rb.localeData(b), this)
        }),
        localeData: function() {
            return this._locale
        }
    }),
    rb.fn.millisecond = rb.fn.milliseconds = mb("Milliseconds", !1),
    rb.fn.second = rb.fn.seconds = mb("Seconds", !1),
    rb.fn.minute = rb.fn.minutes = mb("Minutes", !1),
    rb.fn.hour = rb.fn.hours = mb("Hours", !0),
    rb.fn.date = mb("Date", !0),
    rb.fn.dates = e("dates accessor is deprecated. Use date instead.", mb("Date", !0)),
    rb.fn.year = mb("FullYear", !0),
    rb.fn.years = e("years accessor is deprecated. Use year instead.", mb("FullYear", !0)),
    rb.fn.days = rb.fn.day,
    rb.fn.months = rb.fn.month,
    rb.fn.weeks = rb.fn.week,
    rb.fn.isoWeeks = rb.fn.isoWeek,
    rb.fn.quarters = rb.fn.quarter,
    rb.fn.toJSON = rb.fn.toISOString,
    l(rb.duration.fn = k.prototype, {
        _bubble: function() {
            var a, b, c, d = this._milliseconds,
            e = this._days,
            f = this._months,
            g = this._data,
            h = 0;
            g.milliseconds = d % 1e3,
            a = n(d / 1e3),
            g.seconds = a % 60,
            b = n(a / 60),
            g.minutes = b % 60,
            c = n(b / 60),
            g.hours = c % 24,
            e += n(c / 24),
            h = n(nb(e)),
            e -= n(ob(h)),
            f += n(e / 30),
            e %= 30,
            h += n(f / 12),
            f %= 12,
            g.days = e,
            g.months = f,
            g.years = h
        },
        abs: function() {
            return this._milliseconds = Math.abs(this._milliseconds),
            this._days = Math.abs(this._days),
            this._months = Math.abs(this._months),
            this._data.milliseconds = Math.abs(this._data.milliseconds),
            this._data.seconds = Math.abs(this._data.seconds),
            this._data.minutes = Math.abs(this._data.minutes),
            this._data.hours = Math.abs(this._data.hours),
            this._data.months = Math.abs(this._data.months),
            this._data.years = Math.abs(this._data.years),
            this
        },
        weeks: function() {
            return n(this.days() / 7)
        },
        valueOf: function() {
            return this._milliseconds + 864e5 * this._days + this._months % 12 * 2592e6 + 31536e6 * z(this._months / 12)
        },
        humanize: function(a) {
            var b = eb(this, !a, this.localeData());
            return a && (b = this.localeData().pastFuture( + this, b)),
            this.localeData().postformat(b)
        },
        add: function(a, b) {
            var c = rb.duration(a, b);
            return this._milliseconds += c._milliseconds,
            this._days += c._days,
            this._months += c._months,
            this._bubble(),
            this
        },
        subtract: function(a, b) {
            var c = rb.duration(a, b);
            return this._milliseconds -= c._milliseconds,
            this._days -= c._days,
            this._months -= c._months,
            this._bubble(),
            this
        },
        get: function(a) {
            return a = w(a),
            this[a.toLowerCase() + "s"]()
        },
        as: function(a) {
            var b, c;
            if (a = w(a), b = this._days + this._milliseconds / 864e5, "month" === a || "year" === a) return c = this._months + 12 * nb(b),
            "month" === a ? c: c / 12;
            switch (b += ob(this._months / 12), a) {
            case "week":
                return b / 7;
            case "day":
                return b;
            case "hour":
                return 24 * b;
            case "minute":
                return 24 * b * 60;
            case "second":
                return 24 * b * 60 * 60;
            case "millisecond":
                return 24 * b * 60 * 60 * 1e3;
            default:
                throw new Error("Unknown unit " + a)
            }
        },
        lang: rb.fn.lang,
        locale: rb.fn.locale,
        toIsoString: e("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",
        function() {
            return this.toISOString()
        }),
        toISOString: function() {
            var a = Math.abs(this.years()),
            b = Math.abs(this.months()),
            c = Math.abs(this.days()),
            d = Math.abs(this.hours()),
            e = Math.abs(this.minutes()),
            f = Math.abs(this.seconds() + this.milliseconds() / 1e3);
            return this.asSeconds() ? (this.asSeconds() < 0 ? "-": "") + "P" + (a ? a + "Y": "") + (b ? b + "M": "") + (c ? c + "D": "") + (d || e || f ? "T": "") + (d ? d + "H": "") + (e ? e + "M": "") + (f ? f + "S": "") : "P0D"
        },
        localeData: function() {
            return this._locale
        }
    });
    for (tb in fc) fc.hasOwnProperty(tb) && pb(tb.toLowerCase());
    rb.duration.fn.asMilliseconds = function() {
        return this.as("ms")
    },
    rb.duration.fn.asSeconds = function() {
        return this.as("s")
    },
    rb.duration.fn.asMinutes = function() {
        return this.as("m")
    },
    rb.duration.fn.asHours = function() {
        return this.as("h")
    },
    rb.duration.fn.asDays = function() {
        return this.as("d")
    },
    rb.duration.fn.asWeeks = function() {
        return this.as("weeks")
    },
    rb.duration.fn.asMonths = function() {
        return this.as("M")
    },
    rb.duration.fn.asYears = function() {
        return this.as("y")
    },
    rb.locale("en", {
        ordinal: function(a) {
            var b = a % 10,
            c = 1 === z(a % 100 / 10) ? "th": 1 === b ? "st": 2 === b ? "nd": 3 === b ? "rd": "th";
            return a + c
        }
    }),
    Gb ? module.exports = rb: "function" == typeof define && define.amd ? (define("moment",
    function(a, b, c) {
        return c.config && c.config() && c.config().noGlobal === !0 && (vb.moment = sb),
        rb
    }), qb(!0)) : qb()
}).call(this);